using System;
using System.Linq;
using System.Collections.Generic;
using UnityEngine;
using Sirenix.OdinInspector;
using System.Reflection;

[AttributeUsage(AttributeTargets.Class,Inherited = false,AllowMultiple = false)]
sealed class BuffAttribute : Attribute
{
    readonly string buffType;
    readonly int order;
    public BuffAttribute(string buffType,int order)
    {
        this.buffType = buffType;
        this.order = order;
    }

    public string BuffType { get { return buffType; } }
    public int Order { get { return order; } }
}

public abstract class BuffBase
{
    [HideInInspector]
    public bool IsSkillBuff;
    public bool HideTriggerType
    {
        get
        {
            if(this is ActionControlBuff) return true;
            if(this is AttributeModifyBuff) return true;
            return IsSkillBuff;
        }
    }

    [HideInInspector]
    public bool IsExecutionBuff;
    [HideInInspector]
    public virtual string Label => "Buff";
    [ToggleGroup("Enabled","$Label")]
    public bool Enabled;
    
}